home *** CD-ROM | disk | FTP | other *** search
- #include "tcpip.h"
-
- void sendpack(char *fromhost, int fromport, char *tohost, int toport)
- {
- char *packet;
- char *udppacket;
- static struct sockaddr_in local, remote;
- static int sock = 0;
- int totsent = sizeof(struct iphdr) + sizeof(struct udphdr);
- if (!sock) {
- resolve_address((struct sockaddr *)&local, fromhost, fromport);
- resolve_address((struct sockaddr *)&remote, tohost, toport);
- sock = socket(AF_INET, SOCK_RAW, 255);
- if (sock == -1) { perror("Getting raw socket"); exit(-1); }
- }
- udppacket = create_udp(local.sin_addr.s_addr, remote.sin_addr.s_addr,
- local.sin_port, remote.sin_port, NULL, 0);
- packet = create_ip(local.sin_addr.s_addr, remote.sin_addr.s_addr,
- 17, 24, 4, udppacket, 20);
- {
- int result;
-
- result = sendto(sock, packet, totsent, 0, (struct sockaddr *)&remote,
- sizeof(remote));
- if (result != totsent) { perror("sending packet"); }
- }
- }
-
- main(int argc, char **argv) {
- if (argc!=5) {
- printf("usage: %s <from host> <from port> <to host> <to port>\n", argv[0]);
- exit(-1);
- }
- printf("fake: %s.%d --> %s.%d\n", argv[1], atoi(argv[2]), argv[3],
- atoi(argv[4]));
-
- sendpack(argv[1], atoi(argv[2]), argv[3], atoi(argv[4]));
- }
-